package com.apartment.own.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.apartment.common.core.domain.BaseEntity;
import com.apartment.own.domain.enums.ConventionalDepositEnum;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.apartment.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.NonNull;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

/**
 * 添加预约 业务员记录租客的预约看房的记录对象 own_ord_subscribe
 *
 * @author @Dog_E
 * @date 2020-08-28
 */
@Data
@ApiModel("添加预约 业务员记录租客的预约看房的记录")
public class OwnOrdSubscribe extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(type = IdType.ID_WORKER)
    @ApiModelProperty("ID")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String id;

    /**
     * 删除标志（0代表存在 1代表删除）
     */
    @TableLogic
    @ApiModelProperty("删除标志（0代表存在 1代表删除）")
    private String delFlag;

    /**
     * 手机号区号字典
     */
    @ApiModelProperty("手机号区号字典")
    @Excel(name = "手机号区号字典")
    private Long areaCode;

    /**
     * 手机号
     */
    @ApiModelProperty("手机号")
    @Excel(name = "手机号")
    @NotNull
    @Pattern(message = "请输入正确的手机号!", regexp = "^1[0-9]{10}$")
    private String tel;

    /**
     * 资质类型
     */
    @ApiModelProperty("资质类型")
    @Excel(name = "资质类型")
    private Integer certificationType;

    /**
     * 姓名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;

    /**
     * 身份类型
     */
    @ApiModelProperty("身份类型")
    @Excel(name = "身份类型")
    private Integer idType;

    /**
     * 身份证件号
     */
    @ApiModelProperty("身份证件号")
    @Excel(name = "身份证件号")
    private String idNumber;

    /**
     * 居住人类型
     */
    @ApiModelProperty("居住人类型")
    @Excel(name = "居住人类型")
    private Integer residentType;

    /**
     * QQ/微信/其他
     */
    @ApiModelProperty("QQ/微信/其他")
    @Excel(name = "QQ/微信/其他")
    private String contactWay;

    /**
     * 性别0:男 1:女
     */
    @ApiModelProperty("性别0:男 1:女")
    @Excel(name = "性别0:男 1:女")
    @NotNull
    private String sex;

    /**
     * 国籍
     */
    @ApiModelProperty("国籍")
    @Excel(name = "国籍")
    private Integer nationality;

    /**
     * 职业类型
     */
    @ApiModelProperty("职业类型")
    @Excel(name = "职业类型")
    private Integer vocationalType;
//-------------------企业---------------------------------
    /**
     * 单位名称
     */
    @ApiModelProperty("单位名称")
    @Excel(name = "单位名称")
    private String companyName;
    /**
     * 营业执照
     */
    @ApiModelProperty("营业执照")
    @Excel(name = "营业执照")
    private String businessLicense;
    /**
     * 企业联系人
     */
    @ApiModelProperty("企业联系人姓名")
    @Excel(name = "企业联系人姓名")
    private String enterpriseContact;
//-----------------------------------------------------
    /**
     * 紧急联系人类型
     */
    @ApiModelProperty("紧急联系人类型")
    @Excel(name = "紧急联系人类型")
    private Integer emergencyContactType;

    /**
     * 紧急联系人姓名
     */
    @ApiModelProperty("紧急联系人姓名")
    @Excel(name = "紧急联系人姓名")
    private String emergencyContactName;

    /**
     * 紧急联系人手机号
     */
    @ApiModelProperty("紧急联系人手机号")
    @Excel(name = "紧急联系人手机号")
    private String emergencyContactTel;

    /**
     * 预定方式 0:线下支付 1:线上支付
     */
    @ApiModelProperty("预定方式 0:线下支付 1:线上支付")
    @Excel(name = "预定方式 0:线下支付 1:线上支付")
    private Integer reservationMethod;

    /**
     * 定金类型
     */
    @ApiModelProperty("定金类型")
    @Excel(name = "定金类型")
    private Integer depositType;

    /**
     * 定金金额
     */
    @ApiModelProperty("定金金额")
    @Excel(name = "定金金额")
    private BigDecimal deposit;

    /**
     * 定金凭证图片
     */
    @ApiModelProperty("定金凭证图片")
    @Excel(name = "定金凭证图片")
    private String depositVoucherPicture;

    /**
     * 房源类型
     */
    @ApiModelProperty("房源类型")
    @Excel(name = "房源类型")
    private Integer housingType;

    /**
     * 选择房源(小区名,门牌号)
     */
    @ApiModelProperty("选择房源(小区名,门牌号)")
    @Excel(name = "选择房源(小区名,门牌号)")
    private String listingsName;

    /**
     * 起租时间
     */
    @ApiModelProperty("起租时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "起租时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startLeaseTime;

    /**
     * 退租时间
     */
    @ApiModelProperty("退租时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "退租时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date surrenderLeaseTime;

    /**
     * 支付时间类型(租金)
     */
    @ApiModelProperty("支付时间类型(租金)")
    @Excel(name = "支付时间类型(租金)")
    private Integer paymentTimeType;

    /**
     * 押金类型 (无押金,押1...)
     */
    @ApiModelProperty("押金类型 (无押金,押1...)")
    @Excel(name = "押金类型")
    private Integer cashPledgeType;

    /**
     * 支付时间类型(支付时间)
     */
    @ApiModelProperty("支付时间类型(支付时间)")
    @Excel(name = "支付时间类型(支付时间)")
    private Integer paymentTimesType;
    /**
     * 支付时间(天数)
     */
    @ApiModelProperty("支付时间(天数)")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支付时间(天数)", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Integer paymentTime;

    /**
     * 预定时间
     */
    @ApiModelProperty("预定时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预定时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Future(message = "请核对预定时间")
    @NotNull
    private Date scheduledTime;

    /**
     * 预计签约时间
     */
    @ApiModelProperty("预计签约时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计签约时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Future(message = "请核对预计签约时间")
    @NotNull
    private Date estimatedSigningTime;

    /**
     * 预计签约时间凭证图片
     */
    @ApiModelProperty("预计签约时间凭证图片")
    @Excel(name = "预计签约时间凭证图片")
    private String estimatedSigningTimeVoucherPicture;

    /**
     * 租金
     */
    @ApiModelProperty("租金")
    @Excel(name = "租金")
    @NotNull(message = "请核对租金金额")
    private BigDecimal rental;
    /**
     * 房间id
     */
    @ApiModelProperty("房间id")
    @Excel(name = "房间Id")
    private String roomId;
    /**
     * 预定状态
     */
    @ApiModelProperty("预定状态")
    @Excel(name = "预定状态")
    @JsonIgnore
    private Integer subscribeStatus;
    /**
     * 预定所在城市名称
     */
    @ApiModelProperty("预定所在城市名称")
    @Excel(name = "预定所在城市名称")
    @JsonIgnore
    private String cityName;
    /**
     * 预订方式(线上,线下)
     */
    @ApiModelProperty("预订方式(线上,线下)")
    @Excel(name = "预订方式(线上,线下)")
    private Integer subscribeType;
    /**
     * 小区名
     */
    @ApiModelProperty("小区名")
    @Excel(name = "小区名")
    @NotNull(message = "请选择房间!")
    private String villageName;
}
